

//
//  YYYHomeListDAL.swift
//  HotNews
//
//  Created by YYY on 2017/11/22.
//  Copyright © 2017年 成品家（北京）网路科技有限公司. All rights reserved.
//

import Foundation
//DAL：数据访问层
//使命：负责数据库和网络数据之间数据存储
class YYYHomeListDAL
{
    //类方法
    /// 从本地数据库或网络加载微博数据
    ///
    /// - Parameters:
    ///   - since_id: 下拉刷新使用的ID
    ///   - max_id: 上拉加载使用的ID
    ///   - completion: 完成回调（返回微博的字典数组和是否请求成功）
    class func loadStatus(since_id: Int64 = 0, max_id: Int64 = 0, completion: @escaping(_ result: [[String: Any]]?, _ isSuccess: Bool) -> ())
    {
        //1:检查本地数据，如果有，直接返回。
        guard let userId = YYYNetworkManager.shared.userAccount.uid else
        {
            completion(nil, false)
            return
        }
        
        let array = SQLiteManager.shared.loadStatus(userId: userId, since_id: since_id, max_id: max_id)
        if array.count > 0
        {
            completion(array, true)
            return
        }
        //2:如果本地没有缓存数据，从网络加载数据
        YYYNetworkManager.shared.statusList(since_id: since_id, max_id: max_id) { (json, isSuccess) in
            if !isSuccess
            {
                completion(nil, false)
                return
            }
            guard let tempJson = json  else
            {
                completion(nil, isSuccess)
                return
            }
            //3:加载完成，将网络数据[字典数组]写入到本地数据库
            SQLiteManager.shared.updateTable(userId: userId, array: tempJson)
            //4：返回网络数据
            completion(tempJson, isSuccess)
        }
        
    }
}
